1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.google.common.collect;
18
19 import com.google.common.annotations.GwtCompatible;
20
21 import java.io.Serializable;
22
23 import javax.annotation.Nullable;
24
25
26 @GwtCompatible(serializable = true)
27 final class NullsLastOrdering<T> extends Ordering<T> implements Serializable {
28 final Ordering<? super T> ordering;
29
30 NullsLastOrdering(Ordering<? super T> ordering) {
31 this.ordering = ordering;
32 }
33
34 @Override public int compare(@Nullable T left, @Nullable T right) {
35 if (left == right) {
36 return 0;
37 }
38 if (left == null) {
39 return LEFT_IS_GREATER;
40 }
41 if (right == null) {
42 return RIGHT_IS_GREATER;
43 }
44 return ordering.compare(left, right);
45 }
46
47 @Override public <S extends T> Ordering<S> reverse() {
48
49 return ordering.reverse().nullsFirst();
50 }
51
52 @Override public <S extends T> Ordering<S> nullsFirst() {
53 return ordering.nullsFirst();
54 }
55
56 @SuppressWarnings("unchecked")
57 @Override public <S extends T> Ordering<S> nullsLast() {
58 return (Ordering<S>) this;
59 }
60
61 @Override public boolean equals(@Nullable Object object) {
62 if (object == this) {
63 return true;
64 }
65 if (object instanceof NullsLastOrdering) {
66 NullsLastOrdering<?> that = (NullsLastOrdering<?>) object;
67 return this.ordering.equals(that.ordering);
68 }
69 return false;
70 }
71
72 @Override public int hashCode() {
73 return ordering.hashCode() ^ -921210296;
74 }
75
76 @Override public String toString() {
77 return ordering + ".nullsLast()";
78 }
79
80 private static final long serialVersionUID = 0;
81 }